package cn.iocoder.yudao.module.ai.tool.function;

import cn.hutool.http.HttpUtil;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonClassDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.ai.chat.model.ToolContext;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;

/**
 * 工具：本周菜谱查询
 *
 * 同时，也是展示 ToolContext 上下文的使用
 *
 * @author Ren
 */
@Component("menu_query")
public class MenuQueryToolFunction
        implements BiFunction<MenuQueryToolFunction.Request, ToolContext, String> {

    @Resource
    private AdminUserApi adminUserApi;

    @Data
    @JsonClassDescription("排餐信息查询")
    public static class Request {

        /**
         * 排餐日期
         */
        @JsonProperty(value = "inputdate")
        @JsonPropertyDescription("需要查询的日期，格式yyyy-MM-dd，例如 查看今天排餐 传值2025-11-05")
        private String inputdate;

    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Response {

        /**
         * 星期
         */
        private String weekDate;
        /**
         * 菜品1
         */
        private String dishOne;
        /**
         * 菜品2
         */
        private String dishTwo;
        /**
         * 菜品3
         */
        private String dishThree;
        /**
         * 菜品4
         */
        private String dishFour;
        /**
         * 菜品5
         */
        private String dishFive;
        /**
         * 日期（格式为yyyy-MM-dd）
         */
        private String date;
        /**
         * 早餐
         */
        private String breakfast;
        /**
         * 午餐
         */
        private String lunch;
        /**
         * 晚餐
         */
        private String dinner;

    }

    @Override
    public String apply(Request request, ToolContext toolContext) {

        HashMap<String, String> map = new HashMap<>();
        map.put("inputdate", request.getInputdate());
        String result = HttpUtil.createPost("http://192.168.1.168:38090/admin-api/prepare/weekMenu")
                .addHeaders(Map.of("Authorization", "aee80760f75c41c4866ecb9ef418c475"))
                .body(JSONObject.toJSONString(map))
                .execute()
                .body();
        return result;
    }

}
